home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / thomas / thomas.lha / Thomas / Thomas-1.1 / DIFFERENCES next >
Text File  |  1992-09-25  |  4KB  |  82 lines

  1. -*-Indented-Text-*-
  2.  
  3.                        Known Problems in Thomas
  4.                    (and a comparison to Dylan(TM))
  5.                    -------------------------------
  6.  
  7. I. Non-Portable Elements of Thomas
  8.  
  9. In addition to the file src/implementation-specific.scm, we are aware
  10. of one assumption we make about the underlying Scheme system which is
  11. not guaranteed by the IEEE standard.  We assume that any exact
  12. non-integer is a ratio.  We know of no implementations of Scheme in
  13. which this is NOT true, but mention it here for completeness.
  14.  
  15. Some implementations of Scheme do not support the entire numerical
  16. hierarchy as described in the IEEE standard (it is not required that
  17. they do so).  If part of the hierarchy is omitted in the
  18. implementation, this will be visible within the Thomas implementation.
  19. This most often manifests itself in a lack of complex numbers, large
  20. rationals, or very large integers.
  21.  
  22. II. Known differences from the book "Dylan(TM) an object-oriented
  23.     dynamic language" by Apple Computer Eastern Research and
  24.     Technology, April 1992.
  25.  
  26. 1) In order to use Scheme's READ to handle Thomas expressions, Thomas
  27.    uses !key and !rest wherever the Dylan(TM) book uses #key or #rest.
  28.  
  29. 2) Thomas variable names are restricted to the subset of Scheme names
  30.    that don't start with "!" or "dylan:".  This avoids name clashes
  31.    between user variable names and compiler-generated variables.
  32.  
  33. 3) Thomas doesn't remember the initial case of symbols, since it
  34.    inherits the case from the underlying Scheme system.  Thus some
  35.    implementations of Thomas store symbols in upper case, some in
  36.    lower case, and some preserve case.  All implementations are
  37.    otherwise case-insensitive for symbols, keywords and variable
  38.    names.
  39.  
  40. 4) Thomas doesn't fully handle sealed classes, abstract classes, or
  41.    read-only module variables.
  42.  
  43. 5) Thomas doesn't support the REMOVE-SLOT operation.  We don't really
  44.    understand the full intent of this operation in a variety of
  45.    circumstances.
  46.  
  47. 6) Thomas doesn't do collection alignment for tables (as specified on
  48.    pages 128 and 129); other collection types should be OK.  Fixing
  49.    this would be a very nice contribution to the Thomas implementation
  50.    (hint, hint).
  51.  
  52. 7) Thomas doesn't do (SETTER DIRECT-SUPERCLASSES).  This is somewhere
  53.    between an oversight (we honestly didn't notice it and it isn't in
  54.    the index) and a pain to write.  Again, help would be appreciated.
  55.  
  56. 8) Thomas doesn't do virtual slots in a way that supports their use as
  57.    "filtered slots" as described on pages 58 and 59.  We find the
  58.    description confusing, and require implementors to allocate an
  59.    object of the supertype to store the "hidden" slot value rather
  60.    than relying on NEXT-METHOD to find the hidden slot in the object
  61.    itself.
  62.  
  63. 9) Some implementations of Scheme do not recognize the same set of literal
  64.    character names as specified in the book.  IEEE Scheme requires the
  65.    character literals #\space and #\newline.  Dylan also specifies
  66.    #\rubout, #\page, #\tab, #\backspace, #\return, and #\linefeed.
  67.  
  68. III. Additions to the Thomas language
  69.  
  70. All implementations of Thomas provide four methods not mentioned in
  71. Dylan(TM):
  72.  
  73.     (display <object>)    derived from Scheme's DISPLAY
  74.     (newline)             derived from Scheme'S NEWLINE
  75.     (print <object>)      same as write-line
  76.     (write-line <object>) NEWLINE, then WRITE <object>
  77.  
  78. Some implementations add additional methods or generic functions.
  79. These are documented in the file kits/<implementation>/README.
  80.  
  81. $Id: DIFFERENCES,v 1.4 1992/09/25 16:42:12 birkholz Exp $
  82.